#include <iostream>

// Definition for singly-linked list.
struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x): val(x), next(nullptr) {}
    ListNode(int x,ListNode* next):val(x),next(next) {}
};
// 求链表中环的长度
int lengthOfCycle(ListNode* head) {
    ListNode *slow, *fast;
    slow = fast = head;
    int len = 0;    // 环的长度
    while(fast != nullptr && fast->next != nullptr) {
        fast = fast->next->next;    // 快指针走两步
        slow = slow->next;          // 慢指针走一步
        if(fast == slow) {      // 找到环的首次相遇点
            do {
                fast = fast->next->next;    // 快指针走两步
                slow = slow->next;  // 慢指针走一步
                len++;
            } while(slow != fast);
            return len;
        }
    }
    return 0;   // 没有环，环的长度为0；
}
int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}
